#ifndef POLARPLOTWIDGET_H
#define POLARPLOTWIDGET_H

#include <QWidget>
#include <QtMath>

// 极坐标点结构体
struct PolarPoint {
    double angle;
    double radius;
};

// 自定义绘图部件
class PolarPlotWidget : public QWidget
{
    Q_OBJECT
public:
    explicit PolarPlotWidget(QWidget *parent = nullptr);

    void setData(const QVector<PolarPoint>& data);
    bool saveImage(const QString& filePath);

protected:
    void paintEvent(QPaintEvent *event) override;
    QSize sizeHint() const override { return QSize(800, 800); }

private:
    QVector<PolarPoint> m_data;
    QVector<QPointF> m_cartesianPoints;  // 转换后的笛卡尔坐标点

    // 极坐标转笛卡尔坐标
    QPointF polarToCartesian(double angle, double radius, const QRect& drawArea);
    // 计算合适的缩放因子
    double calculateScaleFactor(const QRect& drawArea);
};



#endif // POLARPLOTWIDGET_H
